package demo01.WaitAndNotify;

public class BaoZiPu extends Thread {
    //资源类包子，是一个共同的锁对象
    private BaoZi bz;
    //整花样，0和1是不同的包子
    int count = 0;

    public BaoZiPu(BaoZi bz) {
        this.bz = bz;
    }

    @Override
    public void run() {
        while (true) {
            //同步锁，因为不能一边出包子，一边吃包子
            synchronized (bz) {
                //判断包子有没有，假设有包子铺就不去做了，直接等待
                if (bz.flag) {
                    try {
                        bz.wait();
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                } else {//else加不加都行，因为不加wait过后直接执行，加了wait过后在来一个循环执行相同的代码(else里面的代码)
                    //有两种包子
                    if (count % 2 == 0) {
                        //生产薄皮三鲜馅包子
                        bz.pi = "薄皮";
                        bz.xian = "三鲜馅";
                    } else {
                        //生产冰皮韭菜馅包子
                        bz.pi = "冰皮";
                        bz.xian = "韭菜馅";
                    }
                    //换下一种包子
                    count++;
                    System.out.println("包子铺正在做" + bz.pi + bz.xian + "的包子,需要等5秒钟时间出包子");
                    try {
                        Thread.sleep(5000);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    bz.flag = true;
                    System.out.println("包子铺生产好了" + bz.pi + bz.xian + "的包子,吃货可以来吃包子了");
                    bz.notify();
                }
            }
        }
    }
}
